#ifndef _IS_MATRIX_K_H
#define _IS_MATRIX_K_H
#include "stabilize_config.h"
class IsMatrixK
{
public:
    kalmanType IS_Matrix[R_MATRIX_LENGTH];
    kalmanType IS_InverseMatrix[R_MATRIX_LENGTH];
    kalmanType IS_TransposeMatrix[R_MATRIX_LENGTH];
    kalmanType IS_AddedMatrix[R_MATRIX_LENGTH];
    kalmanType IS_MultMatrix[R_MATRIX_LENGTH];
public:
    IsMatrixK(void);
	/* Calculate the inverse matrix of 3x3 matrix. */
	void calcInverseMat(kalmanType* pIS_Matrix, int myMatLength);

	/* Transpose a 3x3 matrix. */
	void calcTransposeMat(kalmanType* pIS_Matrix, int myMatLength);

	/* Add two matrix. */
	void addMatrix(kalmanType* pMyFirstMatrix, kalmanType* pMySecondMatrix);

	/* Multiply two nxn matrix. */
	void multMatrix(kalmanType* pMyFirstMatrix, kalmanType* pMySecondMatrix, 
        int rank);

public:
    virtual ~IsMatrixK(void);
};
#endif
